package day3;

import java.io.Serializable;

public class PersonCycle implements Serializable{
	/**
	 * 圈子大小，剩多少人
	 */
	private int count=0;
	/**
	 * 第一个人
	 */
	private Person first;
	/**
	 * 最后一个人
	 */
	private Person last;
	/**
	 * 创建一个圈子
	 * @param count
	 */
	public PersonCycle(int count){
//		this.count = count;
		/**
		 * 循环将人加到圈子中
		 */
		for(int i =0; i<count; i++){
			Person p =new Person();
			p.setId(i);
			add(p);
		}
	}
	public Person getFirst() {
		return first;
	}
	public void setFirst(Person first) {
		this.first = first;
	}
	public Person getLast() {
		return last;
	}
	public void setLast(Person last) {
		this.last = last;
	}
	/**
	 * 将人加到圈子中
	 * @param p
	 */
	private void add(Person p) {
		// TODO Auto-generated method stub
		//圈子是空的
		if(this.count==0){
			p.setLeft(p);
			p.setRight(p);
			this.first=p;//this表示当前圈子
			this.last=p;
		}else{
			//圈子已经有人
			this.last.setRight(p);
			p.setLeft(this.last);
			p.setRight(this.first);
			this.first.setLeft(p);
			this.last = p;
		}
	
		//修改圈子大小
		this.count++;
	}
	public void delete(Person p){
		if(this.count==1){
			return;
		}
		//删除是第一个人
		if (this.first.equals(p)){
			this.last.setRight(p.getRight());
			p.getRight().setLeft(this.last);
			this.first = p.getRight();
			
		}
		//删除最后一个人
		else if (this.last.equals(p)){
			this.first.setLeft(p.getLeft());
			p.getLeft().setRight(this.first);
			this.last =p.getLeft();		
			}
		else{
			//删除其中一个
			p.getLeft().setRight(p.getRight());
			p.getRight().setLeft(p.getLeft());
		}
		
		this.count --;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	
}
